package com.by.rpc.utils;

import cn.hutool.core.util.StrUtil;
import cn.hutool.setting.dialect.Props;

/**
 * 配置工具类
 *
 * @author lzh
 */
public class ConfigUtils {

    /**
     * 根据配置文件加载配置
     *
     * @param tClass 配置类
     * @param prefix 配置前缀
     * @param <T>    泛型
     * @return 配置对象
     */
    public static <T> T loadConfig(Class<T> tClass, String prefix) {
        return loadConfig(tClass, prefix, "");
    }

    /**
     * 根据配置文件加载配置
     *
     * @param tClass      配置类
     * @param prefix      配置前缀
     * @param environment 环境
     * @param <T>         泛型
     * @return 配置对象
     */
    public static <T> T loadConfig(Class<T> tClass, String prefix, String environment) {
        StringBuilder stringBuilder = new StringBuilder("application");
        if (StrUtil.isNotBlank(environment)) {
            stringBuilder.append("-").append(environment);
        }
        stringBuilder.append(".properties");
        Props props = new Props(stringBuilder.toString());
        return props.toBean(tClass, prefix);
    }
}
